package com.matt.service.impl;

import com.matt.domain.evaluating.RecommendCourse;
import com.matt.domain.evaluating.RecommendCourseTimes;
import com.matt.foundation.constant.RecommendCourseConstant;
import com.matt.foundation.vo.evaluate.Web.WebRecommendCourseVo;
import com.matt.foundation.vo.evaluate.Web.WebRecommendTimesVo;
import com.matt.repository.base.CourseAllRepository;

import com.matt.service.RecommendCourseService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author diao.qiao@outlook.com
 * @version V1.0
 * @description:
 * @since 2019-01-16
 */
@Service
@Slf4j
public class RecommendCourseServiceImpl implements RecommendCourseService {

    @Autowired
    private CourseAllRepository courseAllRepository;


    @Transactional
    @Override
    public List<RecommendCourse> addRecommendCourse(String evaluateRecordId, Integer monthAge, List evaluateList) {

        return null;
    }

    @Override
    public List<WebRecommendCourseVo> findCoursesByEvaluateId(String evaluateRecordId) {

        return null;
    }

    @Transactional
    @Override
    public List<String> modifyRecommendCourse(String evaluateRecordId, String[] courseIds) {

        return null;
    }

    @Transactional
    @Override
    public RecommendCourseTimes editRecommendCourseTimes(String evaluateRecordId, Integer nurseryTimes, Integer earlyTimes) {

        return null;
    }

    @Override
    public WebRecommendTimesVo findRecommendTimesByEvaluateRecordId(String evaluateRecordId) {

        return null;
    }

    /**
     * 根据月龄和评测结果，获取推荐课程
     *
     * @param monthAge   月龄
     * @param recordList 评测结果
     * @return
     */

    /**
     * 筛选出SAT中低于目标分数的
     *
     * @param recordList 评测结果
     * @param goal       目标分数
     * @return
     */

    /**
     * 根据评测结果推荐课程
     * 当主题课中 情感与社会、注意力、认知发展中有非优势项时；
     * 根据上述，推荐课程，按skill得分从低到高推荐，推荐够目标课程数即可；
     *
     * @param monthAge     宝宝月龄
     * @param categoryList 评测结果
     * @param satScope     S、A、T中非优势项 集合
     * @param size         目标课程数
     * @param flag         true：无弱势，有非优秀，false:弱势
     */

    /**
     * 当评测纪录未达到目标分值时，批量推荐课程,并添加到结果集中
     *
     * @param monthAge 宝宝月龄
     * @param records  评测纪录
     * @param goal     目标分值
     * @param size     推荐数量
     * @param result   结果
     * @return
     */


}
